package com.mgm.result.offer;

import com.mgm.result.IMessage;
import com.mgm.result.IResult;

/**
 * 
 * @ClassName: IResult
 * @Description: TODO(...)
 * @author Andy Zhang
 * @date 2018年6月21日 下午11:52:52
 * 
 * @param <T>
 */
public class OfferResult<T> {
	
	/** 提示消息 */
	private String msg;
	/** 信息代码（例如：0--成功；<>0--错误） */
	private int code;
	/** Offer数据信息 */
	private T offers;

	private OfferResult(T data) {
		this.code = 0;
		this.msg = "success";
		this.offers = data;
	}
	
	private OfferResult(IMessage im) {
		if (im == null) {
			return;
		}
		this.code = im.getCode();
		this.msg = im.getMsg();
	}

	/**
	 * 成功时候的调用
	 * 
	 * @return
	 */
	public static <T> OfferResult<T> success(T data) {
		return new OfferResult<T>(data);
	}

	/**
	 * 成功，不需要传入参数
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> OfferResult<T> success() {
		return (OfferResult<T>) success("");
	}
	
	/**
	 * 失败时候的调用
	 * 
	 * @return
	 */
	public static <T> OfferResult<T> error(IMessage im) {
		return new OfferResult<T>(im);
	}

	public T getOffers() {
		return offers;
	}

	public String getMsg() {
		return msg;
	}

	public int getCode() {
		return code;
	}
}